// JavaScript Document
(function($){
	$.fn.dynamicScroll = function(options){
	// 默认值
	var defaults = {
		speed:40,  //数值越大，速度越慢
		rowHeight:26, //li的高度
		wrapMark: 'ul',
		childMark: 'li'
	};
	var opts = $.extend({}, defaults, options),intId = [];
	var stepItem = 0;
	// 统计回掉请求滚动表格数据的次数
	var countCallback = 0;
	// 是否是首个数据
	var isFirst = true;
	var _this = null;
	var _timeIndex = 0;
	// 监听id
	var listenId = opts.listenId || null;
	function marquee(obj, step, timeIndex){
		obj.find(opts.wrapMark).animate({
			marginTop: '-=1'
		},0,function(){
				var s = Math.abs(parseInt($(this).css("margin-top")));
				if(s >= step){
					var _overLen = opts.overLength && opts.overLength - 16 > 0 ? opts.overLength - 16 : 16;
					if (opts.onChange) {
						var _changeInfo ={
								isFirst: isFirst,
								stepItem: stepItem,
								overLength: _overLen, 
						}
						opts.onChange(_changeInfo, function (len){
							_overLen = len;
						});
					}
					$(this).find(opts.childMark).slice(0, 1).appendTo($(this));
					if (!isFirst) {
						$(this).find(opts.childMark).slice(-1).addClass('del');
						if (opts.onNext && countCallback > 4 && _overLen > 40) {
							opts.onNext();
						}
					}
					$(this).css("margin-top", 0);
					++stepItem;
					isFirst = false;
					if (stepItem >= _overLen) {
						stepItem = 0;
						if (opts.callback) {
							countCallback++;
							opts.overLength = opts.callback();
						}
					}
				}
			});
		}
		this.each(function(i){
			var sh = opts["rowHeight"],speed = opts["speed"];
			_this = $(this);
			intId[i] = setInterval(function(){
				if(_this.find(opts.wrapMark).height() <= _this.height()){
					clearInterval(intId[i]);
				}else{
					marquee(_this, sh, intId[i]);
				}
			}, speed);
			// 不能删除该打印，否则光标移动上去无暂停
			console.log('_this------>', _this);
			_this.hover(function(){
				clearInterval(intId[i]);
			},function(){
				intId[i] = setInterval(function(){
					if(_this.find(opts.wrapMark).height()<=_this.height()){
						clearInterval(intId[i]);
					}else{
						marquee(_this, sh, intId[i]);
					}
				}, speed);
			});
		});

		$(listenId).mouseover(function() {
			clearInterval(_timeIndex);
			_timeIndex = setInterval(function(){
				if(_this.find(opts.wrapMark).height()<=_this.height()){
					clearInterval(intId[0]);
				}else{
					marquee(_this, opts.rowHeight, intId[0]);
				}
			}, opts.speed);
		});
		$(listenId).mouseleave(function() {
			var _scroll =$(listenId).attr("scroll");
			clearInterval(_timeIndex);
		});
	}
})(jQuery);
